package com.tydic.order.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tydic.common.web.domain.bo.DetailBo;
import com.tydic.common.web.domain.bo.IdBo;
import com.tydic.order.domain.Order;
import com.tydic.order.domain.OrderSettlement;
import com.tydic.order.domain.bo.OrderBatchBo;
import com.tydic.order.domain.bo.OrderReceiptBo;
import com.tydic.order.domain.bo.QueryOrderBo;
import com.tydic.order.domain.request.AgainHistoryByPageReq;
import com.tydic.order.domain.request.CheckSelectReq;
import com.tydic.order.domain.request.PlaceOrderRequest;
import com.tydic.order.domain.response.AppOrderResult;
import com.tydic.order.domain.response.CheckSelectResp;
import jakarta.servlet.http.HttpServletResponse;

import java.util.List;

public interface IOrderService {
    Page<Order> getOrderByPage(QueryOrderBo bo);

    List<String> signOrder(OrderBatchBo bo);

    void payOrder(OrderBatchBo bo);

    void modifyReceipt(OrderReceiptBo bo);

    void confirmDeliverProduct(OrderBatchBo bo);

    void confirmTakeGoods(OrderBatchBo bo);

    void cancelOrder(OrderBatchBo bo);

    void invoice(OrderBatchBo bo);

    void settlementOrder(IdBo bo);

    void uploadAndUpdate(String orderId);

    boolean createAndPush(String orderCode, String orderId, String authSignStatus);

    int getNeedHandler();

    int getEnterpriseNeedHandler();

    int getBordererNeedHandler();

    void getContractPageView(String orderCode, HttpServletResponse response);

    String getDoc(String orderCode);

    List<String> placeOrder(PlaceOrderRequest bo);

    /**
     * 获取合同签署链接
     *
     * @param orderCode
     */
    String getSignUrl(String orderCode);

    List<AppOrderResult> getChildren(DetailBo request);

    AppOrderResult getOrderDetail(DetailBo request);

    Page<AppOrderResult> getAgentOrderHistory(AgainHistoryByPageReq request);

    List<CheckSelectResp> checkOrderSelect(List<CheckSelectReq> checkSelectReqs);

    void cancelOrder(String orderId);

    List<OrderSettlement> getOrderSettlements(String orderId);
}
